<%@ page import="com.example.el.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL基本用法</title>
</head>
<body>
<%--EL表达式概念：
        它是Expression Language的缩写。它是一种替换jsp表达式的语言。
    EL表达式的语法：
        ${表达式}
        表达式的特点：有明确的返回值。
        EL表达式就是把内容输出到页面上
    EL表达式的注意事项：
        1.EL表达式没有空指针异常
        2.EL表达式没有数组下标越界
        3.EL表达式没有字符串拼接
    EL表达式的数据获取：
        它只能在四大域对象中获取数据，不在四大域对象中的数据它取不到。
        它的获取方式就是findAttribute(String name)
 --%>

   <%
   //把用户信息存入域中
       User user = new User();
       pageContext.setAttribute("u",user);
   %>
    ${u}===============输出的是内存地址<%--就相当于调用此行代码<%=pageContext.findAttribute("u")%> --%>
    <br/>
    ${u.name}<%--就相当于调用此行代码<% User user = (User) pageContext.findAttribute("u");out.print(user.getName());%> --%><br/>
    <br/>
    ${u.age}
    <br/>
    <h2>-----------获取关联对象数据------------------</h2>
    <br/>
    ${u.address}==========输出的address对象的地址<br/>
    ${u.address.province} - ${u.address.city}<br/>
    ${u["address"]["city"]}
    <h2>-----------获取数组数据---------------------</h2>
    <br/>
    <% String[] cityArray = new String[]{"北京","上海","广州","深圳"};
        pageContext.setAttribute("citys", cityArray);
    %>
    获取数组cityArray方法：${citys}<br/>
    ${citys[0]}
    ${citys[3]}
<%--   <%--%>
<%--       //java 取的索引超过数组本身的长度，会报异常--%>
<%--       String[] cityArray2 = pageContext.getAttribute("citys");--%>
<%--       out.print(cityArray2[4]);--%>
<%--    %>--%>
     ${citys[4]}===========如果超过了数组的下标，则什么都不显示,cityArray[4]<br/>
     ${citys["2"]} =========会自动为我们转换成下标<br/>
     ${citys['1']} <br/>
    <h2>-----------获取List集合数据-----------------</h2>
    <br/>
    <% List<String> listData = new ArrayList<String>();
        listData.add("AAA");
        listData.add("BBB");
        listData.add("CCC");
        listData.add("DDD");
        pageContext.setAttribute("list", listData);
    %>
    ${list}<br/>
    ${list[2]} <br/>
    ${list.get(3)}
    <h2>-----------获取Map集合数据------------------</h2>
    <% Map<String,User> map = new HashMap<String,User>();
        map.put("user",new User());
        pageContext.setAttribute("mapInfo", map);
    %>
    ${mapInfo}<br/>
    ${mapInfo.user.name} - ${mapInfo.aaa.age}<br/>
    ${mapInfo.user.address.city}<br/>
    ${mapInfo["user"]["address"].province}






</body>
</html>
